package com.far.game.xiuzhen.common.utils.json;

import com.far.tools.interf.func.NewCallble;


public class FileWrapper {

    private PropData propData;

    public FileWrapper() {}

    public FileWrapper(PropData propData) {
        this.propData = propData;
    }

    public PropData getPropData() {
        return propData;
    }

    /**
     * 指定json文件名,生成对应类
     * @param fileName 类名
     * @param newCallble 函数接口
     * @return Java映射对象
     */
    public  <T> T getObj(String fileName, NewCallble<T> newCallble) {
        T module = newCallble.newCall();
        cn.hutool.core.bean.BeanUtil.copyProperties(propData.getKeyMap().get(fileName), module);
        return module;
    }

    /**
     * 生成对应类，json文件名要求与类名保持一致
     * @param newCallble 函数接口
     * @return java映射对象
     */
    public  <T> T getObj(NewCallble<T> newCallble) {
        T module = newCallble.newCall();
        String name = module.getClass().getTypeName();
        cn.hutool.core.bean.BeanUtil.copyProperties(propData.getKeyMap().get(name.substring(name.lastIndexOf(".") + 1)+".json"), module);
        return module;
    }
}
